package ControllerLag;

import DBLag.DbRoom;
import DBLag.IFDbRoom;
import ModelLag.Room;
import java.util.ArrayList;

/**
 * Denne controller klasse giver mulighed for trivielle funktioner mht. rooms
 * dvs. Create Read Update Delete (CRUD).
 * @author DM75 Gruppe 3
 * @version 2011-12-22
 */
public class RoomCTR {
    private IFDbRoom dbRoom;

    public RoomCTR() 
    {
        dbRoom = new DbRoom();
    }
    
    /**
     * Find room ved hjælp af navnet.
     * @param roomName Navn på det room der skal findes.
     * @return Hvis room findes returneres Room objekt ellers null.
     */
    public Room findByName(String roomName)
    {
        return dbRoom.findRoom(roomName);
    }
    
    /**
     * Hent alle rooms som er i databasen.
     * @return ArrayList med Room objekter.
     */
    public ArrayList<Room> getAllRooms()
    {
        return dbRoom.getAllRooms();
    }
    
    /**
     * Opdaterer et room som findes i forvejen. Det er kun muligt
     * at opdatere størrelsen på room, da roomName er primær nøgle i tabellen
     * i databasen.
     * @param roomName Navn på det room som skal opdateres.
     * @param newSize Den nye størrelse på room. MAX længde: 10 bogstaver/tal.
     * @return -1 = mislykkedes. 1 = lykkedes.
     */
    public int updateRoom(String roomName, String newSize)
    {
        Room roomObj = new Room();
        roomObj.setRoomName(roomName);
        roomObj.setSize(newSize);
        return dbRoom.updateRoom(roomObj);
    }
    
    /**
     * Bruges til at slette et room ved hjælp af lokalenavnet.
     * @param roomName Navn på room.
     * @return -1 = mislykkedes. 1 = lykkedes.
     */
    public int deleteRoom(String roomName)
    {
        return dbRoom.deleteRoom(roomName);
    }
    
    /**
     * Bruges til at oprette et nyt room. roomName kan kun eksistere en 
     * gang, da roomName er primær nøgle i Room tabellen i databasen.
     * @param roomName Navnet på det room som skal oprettes.
     * @param size Størrelsen på det room som skal oprettes(Antal personer). MAX længde: 10 bogstaver/tal.
     * @return -1 = mislykkedes. 1 = lykkedes.
     */
    public int createRoom(String roomName, String size)
    {
        Room roomObj = new Room(roomName, size);
        return dbRoom.insertRoom(roomObj);
    }
}
